Next: OpenGL Command Bandwidth
Up: Graphics Subsystem Bottlenecks
Previous: Graphics Subsystem Bottlenecks
Looking at the general GTXRD graphics pipeline, there are
three broad types of graphics performance bottlenecks:
- Fill limits
- occur in the rasterization stage. Fill limited
programs are limited by the rate that pixels in the frame buffer
can be updated. Visual simulation applications like flight
simulators that draw large, textured polygons are often fill
limited. The hardware fill limit is often expressed in millions
of pixels per second, and the limit depends on what rasterization
modes (like depth buffering) are enabled.
- Transform limits
- occur in the transformation stage. Transform
limited programs are limited by the rate that vertices can be
lighted, transformed, and clipped. A molecule visualization program that
renders thousands of atoms as finely tessellated spheres is likely
to be transform limited. The hardware transform limit is often
expressed in thousands of polygons per second, and the limit
depends on what transformation modes (like the number of lights)
are enabled.
- Host limits
- occur in the generation and traversal stages. Host
limits reflect the maximum rate at which
the host computer can generate graphics commands so they can be
processed by the graphics subsystem. Some tasks like the finite
element analysis of a car crash cannot be done in real-time and
are therefore clearly host limited, but even programs designed to
be interactive may starve a fast graphics pipe if the program has too
much overhead.
Notice that what limits a program's performance
depends in large part on the application. Some applications may demand a
machine with excellent fill performance; another application may demand
a machine with excellent transform performance. A system architect
must make compromises based on the machine's intended purpose.
A good technique for determining if a program is fill limited is to
resize the window down to a very small size. If the program speeds up,
the program is very likely fill limited. Likewise, if resizing
the window to the full screen size has no effect on the program's
graphics performance, the program is likely to be host or transform
limited. Host based profiling tools can help you determine if a
program is host limited.
A specialized debugger for OpenGL called
ogldebug is available to help characterize what operations
an OpenGL program stresses.
Other limits that do not cleanly fit into the above categories are also
possible. If programs change OpenGL state frequently enough, these
mode changes become a bottleneck. Downloading texture maps into the
hardware is another potential bottleneck.
Understanding the bottlenecks for a given application on a given system
is important for tuning the application. A program that is fill
limited may be able to utilize better lighting and finer tessellation
without affecting application performance. Likewise, a transform
limited program may achieve better performance by limiting the number of
polygons transformed by using coarser tessellations.
Next: OpenGL Command Bandwidth
Up: Graphics Subsystem Bottlenecks
Previous: Graphics Subsystem Bottlenecks
mjk@sgi.com